//
//  Man.m
//  07-内存管理
//
//  Created by dllo on 16/7/12.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import "Man.h"

@implementation Man 
- (void)dealloc {
    [_mId release];
    [_name release];
    [_age release];
    [_gayMan release];
    NSLog(@"对象被释放");
    [super dealloc];
}
- (void)setNumber:(NSInteger)number {
    _number = number;
}

// retain 修饰属性的setter方法
- (void)setName:(NSString *)name {
    if (_name != name) {
        [_name release];
        _name = [name retain];
    }
}

//copy
- (void)setMId:(NSString *)mId {
    if (_mId != mId) {
        [_mId release];
        _mId = [mId copy];
    }
}
//








- (void)setValue:(id)value forKey:(NSString *)key {
    if ([key isEqualToString:@"id"]) {
        self.mId = value;
    }
}
- (id)valueForKey:(NSString *)key {
    return nil;
}


// 协议方法的实现，是签订者的实现（@implementation）中
- (void)sayHello {
    NSLog(@"你好");
}

- (id)copyWithZone:(NSZone *)zone {
    //开辟新的空间  创建一个新的对象
    Man *man = [[Man alloc]init];
    // 浅拷贝 只创建了新的对象 但是所有的属性还指向原来的属性
    man.name = self.name;
    man.age = self.age;
     // 深拷贝, 不只创建了新的对象, 所有的属性, 也对应的拷贝一份新的
   // man.name = [self copy];
  //  man.age = [self copy];
    

    return man;
}






- (void)sayGoodBye {
    NSLog(@"88");
}
@end
